package interfaces;

import java.util.ArrayList;
import java.util.HashMap;

import fantasma.Fantasmas;
import laberinto.Bolita;
import laberinto.Bolon;
import laberinto.Casilla;


public interface ILaberinto extends IObservable{

	void cambiarCantidadColumnas(int i);

	public HashMap<String, Casilla> getLaberinto();

	public int obtenerCantidadFilas();
	public int obtenerCantidadColumnas();

	public Casilla obtenerCasillaInicialPacman();

	public Casilla obtenerCasillaInicialFantasmas();

	public abstract void cambiarCantidadFilas(int cantidad);

	void agregarCasilla(Casilla casilla);

	Casilla obtenerCasillaPorId(String attribute);

	void cambiarCasillaInicialFantasmas(String attribute);

	void cambiarCasillaInicialPacman(String attribute);
	
	public Fantasmas obtenerFantasmas();

	public void agregarFantasmas(IFantasma fantasma);

	public void agregarBolonALaberinto(Bolon nuevoBolon);
	
	public ArrayList<Bolon> ObtenerBolones();
	
	public ArrayList<Bolita> ObtenerBolitas();

	void cambiarFantasmas(Fantasmas fantasmas);

	void agregarFantasmas(IFantasma fantasma, int delta);

	public abstract void agregarContenidoDeCasilla(IObjetoComible oComible, String idCasilla);

	public abstract void sacarContenidoDeCasilla(IObjetoComible oComible, String idCasilla);

	public abstract boolean tieneBolitas();

	void agregarBolitaALaberinto(Bolita bolita);
}
